index.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { PermissionAction } from '@supabase/shared-types/out/constants'
  2. import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader'
  3. import { JWTSecretKeysTable } from '@/components/interfaces/JwtSecrets/jwt-secret-keys-table'
  4. import DefaultLayout from '@/components/layouts/DefaultLayout'
  5. import JWTKeysLayout from '@/components/layouts/JWTKeys/JWTKeysLayout'
  6. import SettingsLayout from '@/components/layouts/ProjectSettingsLayout/SettingsLayout'
  7. import NoPermission from '@/components/ui/NoPermission'
  8. import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
  9. import type { NextPageWithLayout } from '@/types'
  10. const JWTSigningKeysPage: NextPageWithLayout = () => {
  11. const { can: canReadAPIKeys, isSuccess: isPermissionsLoaded } = useAsyncCheckPermissions(
  12. PermissionAction.READ,
  13. 'auth_signing_keys'
  14. )
  15. return (
  16. <>
  17. {!isPermissionsLoaded ? (
  18. <GenericSkeletonLoader />
  19. ) : !canReadAPIKeys ? (
  20. <NoPermission isFullPage resourceText="access your project's API keys" />
  21. ) : (
  22. <JWTSecretKeysTable />
  23. )}
  24. </>
  25. )
  26. }
  27. JWTSigningKeysPage.getLayout = (page) => (
  28. <DefaultLayout>
  29. <SettingsLayout title="jwt keys">
  30. <JWTKeysLayout>{page}</JWTKeysLayout>
  31. </SettingsLayout>
  32. </DefaultLayout>
  33. )
  34. export default JWTSigningKeysPage